import {TempNode} from '../core/TempNode.js';

class SubSlotNode extends TempNode {

  constructor(slots) {

    super();

    this.slots = slots || {};

  }

  getType(builder, output) {

    return output;

  }

  generate(builder, output) {

    if (this.slots[builder.slot]) {

      return this.slots[builder.slot].build(builder, output);

    }

    return builder.format('0.0', 'f', output);

  }

  copy(source) {

    super.copy(source);

    for (const prop in source.slots) {

      this.slots[prop] = source.slots[prop];

    }

    return this;

  }

  toJSON(meta) {

    let data = this.getJSONNode(meta);

    if (!data) {

      data = this.createJSONNode(meta);

      data.slots = {};

      for (const prop in this.slots) {

        const slot = this.slots[prop];

        if (slot) {

          data.slots[prop] = slot.toJSON(meta).uuid;

        }

      }

    }

    return data;

  }

}

SubSlotNode.prototype.nodeType = 'SubSlot';

export {SubSlotNode};
